package com.rafaelGarcia.eLibreria;

import java.util.ArrayList;
import java.util.List;

import com.rafaelGarcia.eLibreria.db.ControladorDB;
import com.rafaelGarcia.eLibreria.modelos.testDb.TestDb;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Unit test for simple App.
 */
public class TEST_ControladorDB 
    extends TestCase
{
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public TEST_ControladorDB( String testName )
    {
        super( testName );
    }

    public void setUp(){
    	
    }
    
	public void tearDown(){
		ControladorDB.vaciarEntidad(TestDb.class);
	}
    
    /**
     * @return the suite of tests being tested
     */
    public static Test suite()
    {
        return new TestSuite( TEST_ControladorDB.class );
    }

    /**
     * Rigourous Test :-)
     */
    public void testInsertarUnElemento()
    {
    	TestDb e = new TestDb("hehrwer");
    	
    	ControladorDB.insertar(e);
    	
    	TestDb aux = ControladorDB.getObjeto(TestDb.class, e.getId());
    	    	
        assertTrue( e.equals(aux) );
    }
    
    public void testInsertarListaDeElementos()
    {
    	List<TestDb> lE = new ArrayList<TestDb>();
    	
    	for(int i = 0; i < 10; i++){
    		lE.add(new TestDb("qwerqwas"));
    	}
    	
    	ControladorDB.insertar(lE);
    	
        assertTrue( numElementosEnDB() == lE.size() );
    }
    
    public void testActualizarElemento(){    	
    	TestDb e = new TestDb("Hola1");
    	
    	ControladorDB.insertar(e);
    	
    	e.setNombre("Hola2");
    	
    	ControladorDB.actualizar(e);
    	
    	assertTrue( numElementosEnDB() < 2 );    	
    }
    
    public void testBorrarElemento(){
    	
    }
    
    public void testBorrarListaElementos(){
    	
    }
    
    private Integer numElementosEnDB(){
    	return ControladorDB.numElementos(TestDb.class);
    }
}
